package ninth.线程操作的相关方法;
//用”取得和设置。。“里面的MyThread类
public class 观察程序的输出 {
    public static void main(String[] args) {
        MyThread mt = new MyThread();
        new Thread(mt,"线程").start();    //启动线程  线程对象调用start（）
        mt.run();   //直接调用run()   通过子类对象调用run（）
    }
}
/**
 * 上面的程序中，
 *  一个通过线程对象调用start()方法启动的
 * 而另一个主方法直接通过Runnable接口的子类对象调用里面的run()
 * 从结果上发现，主方法实际上也是一个线程。
 * 另外要注意：在Java中所有的线程都是同时启动的，哪个线程先抢占到了CPU资源，哪个就先运行
 *
 * 提问：Java每次运行至少启动几个线程
 * 答：至少两个
 * 每当使用Java命令执行一个类的时候 实际上都会启动一个JVM，每一个JVM实际上就是在操作系统中启动了一个进程，
 * Java本身具备了垃圾的收集机制。
 * 所以，在Java运行时候至少会启动两个线程：一个是main线程，另一个是垃圾收集线程
 */

/*
D:\WorkSpaces\Java\jdk-21\bin\java.exe "-javaagent:D:\Software\IntelliJ IDEA\IntelliJ IDEA 2023.3.2\lib\idea_rt.jar=54228:D:\Software\IntelliJ IDEA\IntelliJ IDEA 2023.3.2\bin" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath D:\WorkSpaces\JavaDevelopBase_start_329\out\production\JavaDevelopBase_start_329 ninth.线程操作的相关方法.观察程序的输出
线程运行，i=0
线程运行，i=1
main运行，i=0
线程运行，i=2
main运行，i=1
main运行，i=2

Process finished with exit code 0
 */

